home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_100 / 171_01 / memclean.doc < prev    next >
Text File  |  1984-09-09  |  4KB  |  96 lines

  1.  
  2.               MEMORY CLEAN FOR THE IBM PERSONAL COMPUTER
  3.  
  4.                              Version 1.00
  5.                              May 3, 1983
  6.  
  7.                          Robert J. Beilstein
  8.                         413 Wells Avenue, West
  9.                     North Syracuse, New York 13212
  10.  
  11.  
  12. One of the unfortunate "features" of the IBM Personal Computer is
  13. that, while the 8088 processor will address 1024K of memory, the BIOS
  14. (and, thus, DOS) will only recognize the first 640K (on "regular"
  15. PC's, without the expansion box and ROM, 544K) of memory.
  16.  
  17. While there are a number of programs around which are able to ignore
  18. the memory size passed from DOS, and make use of the additional
  19. memory, there is still a fairly serious problem that needs to be
  20. addressed.
  21.  
  22. When the machine is powered up, the contents of memory are
  23. unpredictable.  In particular, there is probably only a 50%
  24. probability that any given memory location has the proper parity.
  25.  
  26. The ROM BIOS "initial reliability tests" write to both planar and I/O
  27. RAM during initialization.  This not only sets proper parity in the
  28. memory locations (this happens automatically when the locations are
  29. written into), it also tests the memory for proper operation (though,
  30. curiously, it never attempts to write an odd-parity value).
  31.  
  32. Unfortunately, this setting and testing of memory only occurs in the
  33. first 640K (544K) of memory.  Thus, any additional memory in the
  34. system is left in an uninitialized state.
  35.  
  36. If a program attempts to reference a location in this uninitialized
  37. memory before first writing to it (extremely poor programming
  38. practice, it is true), then there is a 50% chance that the result will
  39. be a "PARITY CHECK 2".
  40.  
  41. This seems like an awfully stiff penalty to pay for a program bug, as
  42. it requires one to power down the machine in order to clear it.
  43.  
  44. MEMCLEAN is a program which will write an initial value (with good
  45. parity) into all of the memory locations which IBM misses.
  46.  
  47. When called without additional parameters, the program will clear the
  48. high memory from X'C0000' through X'EFFFF' (768K to 960K).
  49.  
  50. If a parameter of "544K" is specified, locations X'88000' through
  51. X'9FFFF' (544K to 640K) will be cleared.  This is for compatibility
  52. with older (non XT) PC's.
  53.  
  54. If "SEGA" is specified, then locations X'A0000' through X'AFFFF' are
  55. included.  This area is defined to be "reserved" by IBM, but is (for
  56. now) available for use.
  57.  
  58. Specifying "NOHIGH" will inhibit writing into the high memory area
  59. (X'C0000' through X'EFFFF').
  60.  
  61. Note that writing into nonexistent memory locations causes no problems
  62. (other than using up some time).  So there is no problem if there is
  63. memory only up to (say) 576K.
  64.  
  65. The following examples illustrate the use of MEMCLEAN:
  66.  
  67. 1.  A PC/XT with memory in the high area, but not in the "reserved"
  68. area:
  69.  
  70. A>memclean
  71.  
  72.  
  73. 2.  A "regular" PC with 704K of contiguous memory (i.e. up through
  74. X'AFFFF'):
  75.  
  76. A>memclean sega 544k nohigh
  77.  
  78. 3.  A "regular" PC with every available memory location populated:
  79.  
  80. A>memclean 544k sega
  81.  
  82. 4.  A PC/XT with 704K of contiguous memory:
  83.  
  84. A>memclean sega nohigh
  85.  
  86.  
  87. Permission is given to use and copy this program and documentation
  88. freely, as long as no charge is made for its distribution or use, and
  89. as long as the notices and copyright statements in the program and
  90. documentation are left intact.  For complete details of the terms and
  91. conditions, please see the source code.
  92.  
  93. All other rights are reserved.  Program and documentation Copyright
  94. (C) Robert J. Beilstein, 1983.
  95.  
  96.